export function isNullOrUndef(val) {
  return isNull(val) || isUndef(val)
}

export function isNull(val) {
  return val === null
}

export function isUndef(val) {
  return typeof val === 'undefined'
}

/**
 * @param {string} path
 * @returns {boolean} 是否是外部链接
 */
export function isExternal(path) {
  return /^https?:|mailto:|tel:/.test(path)
}

export function formatNumber(num) {
  // 检查是否为 null/undefined/非数字，返回 0
  if (num === null || num === undefined || Number.isNaN(num)) {
    return '0'
  }

  // 处理负数（可选）
  const isNegative = num < 0
  const absoluteNum = Math.abs(num)

  // 格式化逻辑
  if (absoluteNum >= 1000000000) {
    const value = (absoluteNum / 1000000000).toFixed(1).replace(/\.0$/, '')
    return isNegative ? `-${value}b` : `${value}b`
  }
  if (absoluteNum >= 1000000) {
    const value = (absoluteNum / 1000000).toFixed(1).replace(/\.0$/, '')
    return isNegative ? `-${value}m` : `${value}m`
  }
  if (absoluteNum >= 1000) {
    const value = (absoluteNum / 1000).toFixed(1).replace(/\.0$/, '')
    return isNegative ? `-${value}k` : `${value}k`
  }

  // 小于1000直接返回原数字（负数也保留符号）
  return isNegative ? `-${absoluteNum}` : absoluteNum.toString()
}
